home *** CD-ROM | disk | FTP | other *** search
- /* E Source generated by SRCGEN v0.1 */
-
- OPT OSVERSION=37
-
- MODULE 'gadtools','libraries/gadtools','intuition/intuition',
- 'intuition/screens', 'intuition/gadgetclass', 'graphics/text',
- 'highprecision'
-
- ENUM NONE,NOCONTEXT,NOGADGET,NOWB,NOVISUAL,OPENGT,NOWINDOW,NOMENUS
-
- DEF big_calcwnd:PTR TO window,
- big_calcmenus,
- big_calcglist,
- infos:PTR TO gadget,
- scr:PTR TO screen,
- visual=NIL,
- offx,offy,tattr,hps
- DEF q,r:PTR TO gadget,p1,hpx,hpy,hpm,x,y,op,power,p,pp,abt,l2,ef
-
- PROC setupscreen()
- IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN OPENGT
- IF (scr:=LockPubScreen('Workbench'))=NIL THEN RETURN NOWB
- IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN NOVISUAL
- offy:=scr.wbortop+Int(scr.rastport+58)-10
- tattr:=['topaz.font',8,0,0]:textattr
- ENDPROC
-
- PROC closedownscreen()
- IF visual THEN FreeVisualInfo(visual)
- IF scr THEN UnlockPubScreen(NIL,scr)
- IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
- ENDPROC
-
- PROC openbig_calcwindow()
- DEF g:PTR TO gadget
- IF (g:=CreateContext({big_calcglist}))=NIL THEN RETURN NOCONTEXT
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+31,offy+55,31,16,'CA',tattr,0,16,visual,1]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+62,offy+55,31,16,'CE',tattr,1,16,visual,2]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+93,offy+55,31,16,'e',tattr,2,16,visual,3]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+31,offy+119,62,16,'0',tattr,3,16,visual,4]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+31,offy+103,31,16,'1',tattr,4,16,visual,5]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+62,offy+103,31,16,'2',tattr,5,16,visual,6]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+93,offy+103,31,16,'3',tattr,6,16,visual,7]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+31,offy+87,31,16,'4',tattr,7,16,visual,8]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+62,offy+87,31,16,'5',tattr,8,16,visual,9]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+93,offy+87,31,16,'6',tattr,9,16,visual,10]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+31,offy+71,31,16,'7',tattr,10,16,visual,11]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+62,offy+71,31,16,'8',tattr,11,16,visual,12]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+93,offy+71,31,16,'9',tattr,12,16,visual,13]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+93,offy+119,31,16,'.',tattr,13,16,visual,14]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+124,offy+55,31,16,'/',tattr,14,16,visual,15]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+124,offy+71,31,16,'*',tattr,15,16,visual,16]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+124,offy+87,31,16,'-',tattr,16,16,visual,17]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+124,offy+103,31,16,'+',tattr,17,16,visual,18]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+124,offy+119,31,16,'=',tattr,18,16,visual,19]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+155,offy+55,31,16,'/2',tattr,19,16,visual,20]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+155,offy+71,31,16,'*2',tattr,20,16,visual,21]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+0,offy+55,31,16,'PWR',tattr,21,16,visual,22]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+0,offy+71,31,16,'SQR',tattr,22,16,visual,23]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+0,offy+87,31,16,'INT',tattr,23,16,visual,24]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+0,offy+103,31,16,'FRC',tattr,24,16,visual,25]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+0,offy+119,31,16,'ABS',tattr,25,16,visual,26]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+155,offy+87,31,16,'MS',tattr,26,16,visual,27]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+155,offy+103,31,16,'MR',tattr,27,16,visual,28]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+155,offy+119,31,16,'1/X',tattr,28,16,visual,29]:newgadget,
- [NIL]))=NIL THEN RETURN NOGADGET
- IF (big_calcmenus:=CreateMenusA([1,0,'Project',0,$0,0,0,
- 2,0,'Save','S',$0,0,30,
- 2,0,'About','A',$0,0,31,
- 2,0,'Format',0,$0,0,32,
- 3,0,'Zeros','Z',$9,0,33,
- 3,0,'Exponent','E',$9,0,34,
- 3,0,'sCi','C',$9,0,35,
- 2,0,'Quit','Q',$0,0,36,
- 0,0,0,0,0,0,0]:newmenu,NIL))=NIL THEN RETURN NOMENUS
- IF LayoutMenusA(big_calcmenus,visual,NIL)=FALSE THEN RETURN NOMENUS
- IF (big_calcwnd:=OpenWindowTagList(NIL,
- [WA_LEFT,218,
- WA_TOP,24,
- WA_WIDTH,offx+194,
- WA_HEIGHT,offy+148,
- WA_IDCMP,$26C077E,->vanillakey $200000
- WA_FLAGS,$142E,
- WA_TITLE,'Century Calc',
- WA_CUSTOMSCREEN,scr,
- WA_MINWIDTH,67,
- WA_MINHEIGHT,21,
- WA_MAXWIDTH,$280,
- WA_MAXHEIGHT,200,
- WA_AUTOADJUST,1,
- WA_AUTOADJUST,1,
- WA_GADGETS,big_calcglist,
- NIL]))=NIL THEN RETURN NOWINDOW
- stdrast:=big_calcwnd.rport
- PrintIText(big_calcwnd.rport,
- [1,0,0,9,4,tattr,'-1.234567890123456789',NIL]:intuitext,offx,offy)
- PrintIText(big_calcwnd.rport,
- [1,0,0,9,12,tattr,'012345678901234567890',NIL]:intuitext,offx,offy)
- PrintIText(big_calcwnd.rport,
- [1,0,0,9,20,tattr,'123456789012345678901',NIL]:intuitext,offx,offy)
- PrintIText(big_calcwnd.rport,
- [1,0,0,9,28,tattr,'234567890123456789012',NIL]:intuitext,offx,offy)
- PrintIText(big_calcwnd.rport,
- [1,0,0,9,36,tattr,'345678901234567890',NIL]:intuitext,offx,offy)
- PrintIText(big_calcwnd.rport,
- [1,0,0,9,44,tattr,'e-123456789',NIL]:intuitext,offx,offy)
- DrawBevelBoxA(big_calcwnd.rport,0+offx,0+offy,186,55,
- [GT_VISUALINFO,visual,NIL])
- IF SetMenuStrip(big_calcwnd,big_calcmenus)=FALSE THEN RETURN NOMENUS
- Gt_RefreshWindow(big_calcwnd,NIL)
- ENDPROC
-
- PROC closebig_calcwindow()
- IF big_calcwnd THEN ClearMenuStrip(big_calcwnd)
- IF big_calcmenus THEN FreeMenus(big_calcmenus)
- IF big_calcwnd THEN CloseWindow(big_calcwnd)
- IF big_calcglist THEN FreeGadgets(big_calcglist)
- ENDPROC
-
- PROC wait4message(win:PTR TO window)
- DEF mes:PTR TO intuimessage,type,item
- REPEAT
- type:=0
- IF mes:=Gt_GetIMsg(win.userport)
- type:=mes.class
- IF type=IDCMP_MENUPICK
- infos:=mes.code
- ELSEIF (type=IDCMP_GADGETDOWN) OR (type=IDCMP_GADGETUP)
- infos:=mes.iaddress
- ELSEIF type=IDCMP_REFRESHWINDOW
- Gt_BeginRefresh(win)
- Gt_EndRefresh(win,TRUE)
- type:=0
- ELSEIF type=IDCMP_VANILLAKEY
- infos:=mes.code
- ELSEIF type<>IDCMP_CLOSEWINDOW /* remove these if you like */
- type:=0
- ENDIF
- Gt_ReplyIMsg(mes)
- ELSE
- WaitPort(win.userport)
- ENDIF
- UNTIL type
- ENDPROC type
-
- PROC reporterr(er)
- DEF erlist:PTR TO LONG
- IF er
- erlist:=['get context','create gadget','lock wb','get visual infos',
- 'open "gadtools.library" v37+','open window','create menus']
- EasyRequestArgs(0,[20,0,0,'Could not \s!','ok'],0,[erlist[er-1]])
- ENDIF
- ENDPROC er
-
- PROC main()
-
- IF (highprecisionbase:=OpenLibrary('highprecision.library',1))<>0
- IF HpSetup(100)<>0
- hpx:=HpMakeVar()
- hpy:=HpMakeVar()
- hpm:=HpMakeVar()
- hps:=HpMakeStr()
- pp:=0
- p:=0
- ef:=1
- IF reporterr(setupscreen())=0
- reporterr(openbig_calcwindow())
- WHILE (q:= wait4message(big_calcwnd))<>$200
- IF q=$40
- r:=infos
- p1:=r.userdata
- ELSEIF q=$100
- p1:=Long(ItemAddress(big_calcmenus,infos AND $FFFF)+34)
- ELSEIF q=IDCMP_VANILLAKEY
- IF infos=$65
- p1:=3
- ELSEIF infos=$2e
- p1:=14
- ELSEIF infos=$2f
- p1:=15
- ELSEIF infos=$2a
- p1:=16
- ELSEIF infos=$2d
- p1:=17
- ELSEIF infos=$2b
- p1:=18
- ELSEIF (infos=$3d) OR (infos=$d)
- p1:=19
- ELSEIF (infos>="0") AND (infos<="9")
- p1:=infos-$2c
- ENDIF
- ENDIF
- IF p1=36 THEN BRA yy
- SELECT p1
- CASE 1
- Box(2,1,182,53,0)
- HpClear(hpx)
- HpClear(hpy)
- HpClear(hpm)
- pp:=0
- hps[pp]:=0
- ef:=1
- CASE 2
- IF pp=0
- HpClear(y)
- Box(2,1,182,53,0)
- ELSE
- pp:=pp-1
- TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c'," ")
- hps[pp]:=0
- ENDIF
- CASE 15
- cases(15)
- CASE 16
- cases(16)
- CASE 17
- IF ((pp=0) AND (ef=0)) OR (hps[pp-1]="e")
- IF pp=0 THEN Box(2,1,182,53,0)
- Colour(1,0)
- TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c',"-")
- hps[pp++]:="-"
- ELSE
- cases(17)
- ENDIF
- CASE 18
- cases(18)
- CASE 19
- ef:=1
- doit()
- CASE 20
- IF pp<>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- HpHalf(hpy,hpy)
- Hp2str(hpy,hps,p)
- showstring()
- CASE 21
- IF pp<>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- HpDouble(hpy,hpy)
- Hp2str(hpy,hps,p)
- showstring()
- CASE 22
- cases(22)
- CASE 23
- IF pp<>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- HpSqrt(hpy,hpy)
- Hp2str(hpy,hps,p)
- showstring()
- CASE 24
- IF pp<>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- HpInt(hpy,hpy)
- Hp2str(hpy,hps,p)
- showstring()
- CASE 25
- IF pp<>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- HpFrc(hpy,hpy)
- Hp2str(hpy,hps,p)
- showstring()
- CASE 26
- IF pp<>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- HpAbs(hpy,hpy)
- Hp2str(hpy,hps,p)
- showstring()
- CASE 27
- IF pp<>0
- hps[pp]:=0
- Str2hp(hps,hpm)
- ELSE
- HpCopy(hpy,hpm)
- ENDIF
- CASE 28
- pp:=0
- HpCopy(hpm,hpy)
- Hp2str(hpy,hps,p)
- ->WriteF('recalled \s\n',hps)
- showstring()
- CASE 29
- IF pp<>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- HpRec(hpy,hpy)
- Hp2str(hpy,hps,p)
- showstring()
- CASE 30
- abt:=Open('T:Number',NEWFILE)
- l2:=0
- WHILE hps[l2]<>0 DO l2++
- Write(abt,hps,l2)
- Close(abt)
- CASE 31
- abt:='Written using the\nHighPrecision Library\nCreated by\nRalf P. Quimby'
- EasyRequestArgs(big_calcwnd,[20,0,0,abt,'Okay'],0,NIL)
- CASE 32
- NOP
- CASE 33
- p:=Eor(p,4)
- CASE 34
- p:=Eor(p,2)
- CASE 35
- p:=Eor(p,1)
- DEFAULT
- IF (p1>2) AND (p1<15)
- IF pp=0
- ->HpClear(hpy)
- Box(2,1,182,53,0)
- ENDIF
- Colour(1,0)
- IF p1=3
- TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c',"e")
- hps[pp]:="e"
- ELSEIF p1=14
- TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c',".")
- hps[pp]:="."
- ELSE
- TextF(Mod(pp,21)*8+9,pp/21*8+10,'\d',p1-4)
- hps[pp]:=p1-4+"0"
- ENDIF
- IF pp<115 THEN pp:=pp+1
- ENDIF
- ENDSELECT
- ENDWHILE
- yy: closebig_calcwindow()
- IF CtrlC() THEN BRA xx
- ENDIF
- xx: closedownscreen()
- CloseLibrary(highprecisionbase)
- ELSE
- EasyRequestArgs(big_calcwnd,[20,0,0,'No\nRoom','Okay'],0,NIL)
- ENDIF
- ELSE
- EasyRequestArgs(big_calcwnd,[20,0,0,'No\nLib','Okay'],0,NIL)
- ENDIF
- ENDPROC
-
- PROC showstring()
- DEF l,l2,s[22]:ARRAY OF CHAR,y
- ->WriteF('showing \s\n',hps)
- y:=0
- l:=0
- l2:=0
- Box(2,1,182,53,0)
- Colour(1,0)
- WHILE hps[l]<>0
- s[l2]:=hps[l]
- l++
- l2++
- IF (l2=21) OR (hps[l]="e") OR (hps[l]=0)
- s[l2]:=0
- TextF(9,y*8+10,'\s',s)
- l2:=0
- y++
- ENDIF
- ENDWHILE
- ENDPROC
-
- PROC cases(q)
-
- IF ef=0 THEN doit()
-
- op:=q
- IF pp>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpx)
- ELSE
- HpCopy(hpy,hpx)
- ENDIF
- ef:=0
- ->WriteF('x= \s\n',hps)
- ENDPROC
-
- PROC doit()
- IF pp>0
- hps[pp]:=0
- pp:=0
- Str2hp(hps,hpy)
- ENDIF
- IF op=15
- HpDiv(hpx,hpy,hpy)
- ELSEIF op=16
- HpMul(hpx,hpy,hpy)
- ELSEIF op=17
- HpSub(hpx,hpy,hpy)
- ELSEIF op=18
- HpAdd(hpx,hpy,hpy)
- ELSEIF op=22
- power:=Hp2int(hpy)
- HpPower(hpx,power,hpy)
- ENDIF
- Hp2str(hpy,hps,p)
- showstring()
- ENDPROC
- /*EE folds
- -1
- 20 5 23 3 26 133 29 4 32 23 35 6 242 18 245 13 248 19
- EE folds*/
-